datastudio-aws-athena-connectorを使ってGoogleデータスタジオのデータソースにAthenaを指定してみた
データ可視化手段のメンテナンス負荷軽減を目的にGoogle データスタジオを触ってみました。
事前に色々と聞いていたところでは、
- データスタジオに用いるためBigQuery用のデータ書き出しがいる
- ストレージ料金がS3とBigQueryで二重になる
- これまでのAthena上での操作と又別の操作が必要になる
など。そして実際に操作してみて「管理コストやデータ二重管理での利用費増加等、ネガティブ要因が多すぎる」という結論に。
ただ、データスタジオ自体は魅力的です。「BigQueryを中継しなければなんとかなる」と考えて検索してみると、非公式ながらも道筋を整えている先人はいるものです。
datastudio-aws-athena-connectorを使って、データスタジオとAthenaを直接接続してみました。
datastudio-aws-athena-connectorの設定
Google App Scriptでこのコネクタを動作させる準備をします。ソースコードを単純コピペするのもありですが、メンテナンスを考慮して clasp
を利用します。
nodenv local 14.14.0
npm i @google/clasp -g
次にcanyousayyes/datastudio-aws-athena-connector をclone。
git clone [email protected]:canyousayyes/datastudio-aws-athena-connector.git
cd datastudio-aws-athena-connector
claspでログインして認証を済ませます。
clasp login
コネクタ用に新規作成を行います。standalone
を選択します。
clasp create
? Create which script? standalone
以下のエラーが出る場合はURLから設定を変更後、再度実行します。
User has not enabled the Apps Script API. Enable it by visiting https://script.google.com/home/usersettings then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
pushしてdeployします。
clasp push
clasp deploy
次にエディタを開きます。
clasp open
新しいエディタになっている場合は「以前のエディタを使用」を選択します。
appsscript.json
を開き、canyousayyes/datastudio-aws-athena-connector
のappsscript.jsonを貼り付けます。
「公開」の「マニフェストから配置」を選択します。
「Edit」を選択し、適当な「Deployment Name」を指定して「Save」をクリックします。
暫く待つと表示されるURLを開きます。
求められるアクセス権を許可していきます。
コネクタ用の設定を入力していきます。
「Date Range Column Name」と「Row Limit」以外は入力必須です。「Query Output Location」はAthenaの実行結果用S3Bucket(s3://aws-athena-query-results-<ACCOUNT_ID>-ap-northeast-1/
)で問題ありません。
接続が完了できたらAthena上のカラム一覧が表示されます。可視化を行う場合は右上の「探索」をクリックします。
注意点
GlueDatabaseの各テーブルに付き1つの接続が必要です。Athena上で複数のTableをJOIN集計している場合はAthena上で事前にJOIN構成のTableを作りましょう。
接続の自動作成や更新はできないため、手作業を防ぎたい場合はデータスタジオに用いるAthenaの指定Database上にある指定テーブルを定期的に更新する必要があります。接続による利用可能になったTableを複数交えることもできるため、割り切って接続だけは手作業にするのもありです。
あとがき
制約はあるものの、Athena上のTableをそのまま利用できるためBigQuery経由で利用する場合よりも利用費を抑えることができます。権限の許可等の条件もあるために実用出来るかの調査は必要ですが、手間を掛ける価値はあると思います。